Intelligent, autonomous software agents—long the stuff of science fiction—are fast becoming a practical reality. Although software's ability to reason, generally known as artificial intelligence, is still limited, there are useful applications. Most of these applications, however, are very specific and “hand coded” for execution on particular computing platforms, using well-defined data presented in well-defined formats. We do not yet have a generic software agent that can work effectively with all types of information or “knowledge” on any platform where that knowledge might be found. To find particular resources on the Internet today, most applications use search tools or “engines” that are relatively crude. They index textual content, basic metadata, or both. The search result is often a great many “hits” only a few of which are actually useful; they must be filtered manually. The reason is that “knowledge” is a much richer, and more complex, paradigm than simple tags or key words taken out of context. What is needed is a bot system architecture that will support deployment of more intelligent agents and allow them to more effectively operate on or exchange knowledge without limiting them to any specific platform or protocol.
Another growing problem in computing generally and on the Internet in particular is privacy. Personal information about a user is necessary for many applications. For example, knowledge of a user's automobile is needed to register (or perhaps sell) the car “on-line.” Grades and test scores are essential to college applications. Medical history is not appropriate to purchasing theatre tickets. The present invention provides for fine-grained control over privacy, exposing appropriate information as needed, while maintaining secure control over all user data. Improved functionality can be achieved if the user can assert and maintain control over what types of personal information, including identity, are exposed to what types of recipients. Implementing and securely enforcing these kinds of controls requires a new architecture that enables mobile, intelligent software agents to act autonomously on behalf of the user.
Another problem is the need to send or receive digital messages, or take other actions, at times that are inconvenient for the user or when the user is off-line. E-mail “store and forward,” voice messaging mailboxes and the like are known, but they have limited capabilities. Voice messages must be manually retrieved, and neither their subject matter nor level of importance can be determined without the recipient actually listening to the message. E-mail handling requires the user to set up forwarding rules or policies each time forwarding is invoked. Some routing can be done by recognizing a key word in a header, but this approach is awkward and unreliable. What is needed is a convenient way to apply some (artificial) intelligence to handling the user's communications, regardless of whether the user is actually available or on-line at the time. An intelligent software agent, acting on behalf of a user, could make reasoned decisions about routing, storing, blocking or forwarding communications, given a meaningful “profile” of the user. Even more powerful, the software agent could “learn” about the sender of a message, if necessary, to decide how to handle it. All of this could be done while the user is off-line. These features are supported by the bot system architecture of the present invention.
The Foundation for Intelligent Physical Agents (FIPA) is an international organization dedicated to promoting the industry of intelligent bots by openly developing specifications supporting interoperability among agents. Through open collaboration among its member organizations, FIPA has developed a series of specifications including, in particular, the FIPA Abstract Architecture Specification, published in 2000. FIPA provides suggested specifications for agent infrastructure and agent applications. The infrastructure specifications include an agent communication language (ACL), agent services and supporting management ontologies. The primary purpose of the abstract architecture is to identify the elements of the architecture that must be codified. Specifically, if two or more systems use different technologies, it is necessary to identify the common characteristics of the various approaches. This leads to the identification of architectural abstractions: abstract designs that can be formally related to every valid implementation.
The present invention, in many aspects, is consistent with the FIPA abstract architecture. What the present invention provides that FIPA does not is a concrete realization or a practical, workable system. The FIPA abstract architecture provides general descriptions of agents, agent services and agent messaging elements for interoperability. FIG. 1, borrowed from the FIPA abstract architecture document, illustrates the hierarchical relationships between the abstraction defined by FIPA and the elements of a specific instantiation.
FIG. 2 is a block diagram of a prior art mobile agent architecture described in Mobile Agent Computing—A White Paper (Mitsubishi Electric ITA Jan. 19, 1998). That system relies on literally transporting an agent (program) from one site or network node to another, based on a predetermined “itinerary.” The agent initiates the transfer by invoking certain (Java) methods on the server. This signals the server to suspend execution of the agent and to create a persistent image of it to be transferred. The server then inspects an itinerary object, created and owned by the agent, to determine the appropriate destination. That destination is contacted and the agent's image is transferred, where it is again stored persistently before being acknowledged, and then queued for execution on the destination server. Accordingly, the agent's itinerary must be determined by the agent programmer before deployment. The agent cannot make autonomous decisions about travel to new sites in the Mitsubishi system. And the transfer of entire agent applications occupies network bandwidth, thereby eroding performance. The need remains for a mobile agent architecture that is far more flexible to allow agents to operate autonomously and reproduce or migrate as they may determine appropriate to their assigned task.